This application relates to digital processing, digital processors, computers and computer systems.
Computer systems, such as those for e-commerce and e-government, depend on trustworthy software platforms. However, such software platforms and computer systems can contain vulnerabilities that can compromise their trustworthiness. Data elements of these applications, such as buffers, can be exploited. For example, a vulnerable buffer can give a remote attacker access to a computer system. An exploit can include a write to an array data structure that has no proper bounds check. Writing beyond the end of a buffer can overwrite sensitive data such as a return address. A program having this type of vulnerability will work as intended for as long as the size of the buffer is not exceeded. However, an attacker who is aware of the lack of the range check can overflow the buffer whenever he or she chooses. Overwriting the return address can lead to the program unwittingly executing code from an attacker.